package cn.tedu.hotel.service;

import cn.tedu.hotel.pojo.dto.CustomerAddNewDTO;
import cn.tedu.hotel.pojo.vo.CustomerListItemVO;
import cn.tedu.hotel.pojo.vo.CustomerStandardVO;
import io.lettuce.core.dynamic.annotation.Param;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 *  处理客户数据的业务接口
 */
@Transactional
public interface ICustomerService {

    /**
     *  添加客户
     * @param customerAddNewDTO
     */
    void addNew(CustomerAddNewDTO customerAddNewDTO);

    /**
     *  删除客户
     * @param id
     */
    void deleteById(Long id);

    /**
     *  设置客户是删除的
     * @param id
     */
    void setIsDelete(Long id);


    /**
     *  根据用户id，或客户编号，或客户姓名，或客户证件号，或客户手机号 查询客户信息
     * @param id
     * @param userNumber
     * @param userName
     * @param idNumber
     * @param phone
     * @return
     */
    CustomerStandardVO getStandardCustomer(@Param("id") Long id,
                                           @Param("userNumber") String userNumber,
                                           @Param("userName") String userName,
                                           @Param("idNumber") String idNumber,
                                           @Param("phone") String phone,
                                           @Param("isDelete") Integer isDelete);


    /**
     *  查询客户列表
     * @param id
     * @param userNumber
     * @param userName
     * @param idNumber
     * @param phone
     * @return
     */
    List<CustomerListItemVO> listCustomers(@Param("id") Long id,
                                           @Param("userNumber") String userNumber,
                                           @Param("userName") String userName,
                                           @Param("idNumber") String idNumber,
                                           @Param("phone") String phone,
                                           @Param("isDelete") Integer isDelete);


}
